To prevent the compromise of sensitive information (credit card numbers, social security numbers, etc.), industry standards and security/privacy laws often mandate the use of encryption. Such standards and laws include the Health Insurance Portability and Accountability Act of 1996 (HIPAA), the Database Breach Notification Act (CA SB 1386), the Payment Card Industry Data Security Standard, and others.
Encryption is the process of translating data (clear text) into a form that is not interpretable (cipher text) should the data be compromised. This translation is done using strong cryptographic algorithms in conjunction with secret keys. The correct secret key is required to reverse the translation such that the original data can be interpreted. To ensure the security of the process, the strong cryptographic algorithms employ advanced mathematical techniques that tend to be very processing intensive. As such, there is some performance overhead incurred to encrypt and decrypt sensitive information.
The traditional approach used to manage encrypted data within a database management system is to encrypt data at the column-level within a table. This allows for encryption to be used only for data that is considered sensitive.
However, typical data warehouse applications involve running queries against very large data sets. Consequently, such queries can require many millions or billions of decryption operations if a portion of the large data set is encrypted. The performance overhead resulting from the decryption operations can potentially render the queries unusable.